iT邦幫忙

1

React 學習筆記_21(Node.js 檔案系統)

  • 分享至 

  • xImage
  •  

簡介

Node.js提供了一個類似UNIX(POSIX)標準的文件操作API,可以對於檔案進行同步與非同步的操作。


引入

const fs = require("fs");

Method 介紹

為了使用fs中的Method對檔案進行操作,首先先建立一個inpout.text,並將內容填入Node.js fs Test

讀取檔案

讀取檔案的函數有非同步的fs.readFile()與同步的fs.readFileSync(),非同步的method最後有一個callback function,callback的輸入函數包含了錯誤訊息(err),可以利用此錯誤訊息提供是否讀取成功。

const fs = require("fs");

//非同步讀取
fs.readFile("./input.txt",(err,data) => {
    if(err)
    {
        throw err;
    }

    console.log("非同步讀取 :" + data.toString());
});

//=======================================================

//同步讀取
const data = fs.readFileSync("./input.txt","UTF8");
console.log("同步讀取 :" + data);

console.log("執行完畢。");

輸出結果 :
https://ithelp.ithome.com.tw/upload/images/20200415/20124767dwAmcgW5KX.png
由於readFile為非同步讀取,需要等到主執行序(stock)為空時才會將結果Console出來。

寫入檔案

writeFile直接打開文件默認是"W"模式,如果檔案存在,此function寫入的內容會"覆蓋"原本的舊資料。

參數

fs.writeFile(file, data[, options], callback)

  • file - 文件名稱與路徑。
  • data - 要寫入文件的數據,可以是 String 或 Buffer。
  • options - 包含 {encoding, mode, flag}。Defualt為 utf8, 模式為 0666 , flag 為 'w'。
  • callback - callback function,只包含錯誤信息參數(err),當寫入失敗時return。
const fs = require("fs");

console.log("準備寫入文件");
const inputData = "通過writeFile寫入的資料";

fs.writeFile("../JavaScript/input.txt",inputData,(err) => {
    if(err)
    {
        console.log("寫入文件失敗");
    }
    console.log("寫入成功");
})
//================================================================
console.log("讀取txt資料")
fs.readFile("../JavaScript/input.txt",(err,data) => {
    if(err)
    {
        throw err;
    }

    console.log("非同步讀取 :" + data.toString());
});

輸出結果 :
https://ithelp.ithome.com.tw/upload/images/20200416/20124767FbjK7tSvKH.png

打開文件

參數

fs.open(path, flags[, mode], callback)

  • path : 文件的路徑。
  • flags : 文件打開的行為。
  • mode : 設置文件模式。
  • callback function : 兩個參數err,fd。

flags參數

Flag 描述
r 以讀取模式打開文件。若文件不存在則return錯誤。
rs 以同步的方式讀取文件。
w 以寫入模式打开文件,如果文件不存在則return錯誤。
wx 類似 'w',但是如果文件路徑存在,則文件寫入失敗。

範例

const fs = require("fs");

console.log("準備打開文件!");
fs.open('../JavaScript/input.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
  console.log("文件打开成功!");     
});

更改文件名稱

參數

fs.rename(oldPath, newPath, callback)

  • oldPath : 想要更改名稱的文件名稱與路徑。
  • newPath : 更改的文件名稱與路徑。
  • callback : callback function 參數為err當更改名稱失敗時return。

範例

const fs = require("fs");

console.log("準備更改文件名稱")
fs.rename('../JavaScript/input.txt','../JavaScript/Reinput.txt',(err) => {
    if(err)
    {
        throw err;
    }
    console.log("成功更改文件名稱")
});

結果 :
https://ithelp.ithome.com.tw/upload/images/20200416/201247679DaFGnIsL8.png
文件名稱由input.txt -> Reinput.txt

刪除文件

參數

fs.unlink(path, callback)

  • path : 文件路徑。
  • callback : callback function 參數為err,當刪除文件錯誤return。
const fs = require("fs");

console.log("準備刪除文件");
fs.unlink('../JavaScript/input.txt',(err) => {
    if(err)
    {
        throw err;
    }
    console.log("刪除文件成功")
});

結果 :
https://ithelp.ithome.com.tw/upload/images/20200416/20124767Irg1hcmo3k.png
原本建立的input.txt會被刪除。

參考資料 :
Node.js文件系統|菜鳥教成
File System


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言